home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / News / Alexandra.0.82 / Source / mapfile.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-30  |  851 b   |  41 lines

  1.  
  2. #import <streams/streams.h>
  3. #import <stdio.h>
  4. #import "mapfile.h"
  5. #import <appkit/NXCType.h>
  6. #import "readline.h"
  7.  
  8. #define NNTP_LIST_END(s)  ((s)[0]=='.' && ((s)[1]=='\0' || (s)[1]=='\r'))
  9.  
  10. int MapNntpToStream(FILE *theFile,NXStream *theStream,BOOL echoSocket)
  11. {
  12.    char *buffer;
  13.  
  14.    while(buffer=readline(theFile),(buffer!=NULL)&&(!NNTP_LIST_END(buffer))){
  15.        int n;
  16.          
  17.          n = strlen(buffer);
  18.        if (n >= 2 && buffer[n-1] == '\n' && buffer[n-2] == '\r'){
  19.           buffer[n-2]='\n';
  20.           buffer[n-1]='\0';
  21.           n--;
  22.        }
  23.          if(*buffer=='.'){
  24.              buffer++; //remove byte stuffing
  25.             n--;
  26.          }
  27.          
  28.          if(echoSocket)
  29.             printf("%s",buffer);
  30.  
  31.        NXWrite(theStream,buffer,n);
  32.    }
  33.     
  34.     if(echoSocket && (buffer!=NULL) && (NNTP_LIST_END(buffer)))
  35.        printf("%s",buffer);
  36.         
  37.    if(buffer==NULL)
  38.       return -1;
  39.    return 0;
  40. }
  41.